home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / util / wb / VisualPrefs_PT.lha / VisualPrefs_PT / VP-Developer_PT.doc < prev   
Encoding:
Text File  |  1999-09-03  |  4.7 KB  |  121 lines

  1.  
  2.                                Apresentando
  3.  
  4.                O INTERFACE DO VISUALPREFS PARA PROGRAMADORES
  5.  
  6.                             Um trabalho em curso
  7.  
  8.  
  9. Se é um programador, pode aproveitar algumas das características do VisualPrefs.
  10.  
  11. Embora não exista ainda um API completo para o VisualPrefs já é possível
  12. utilizar as classes BOOPSI que o VisualPrefs adiciona ao sistema.
  13.  
  14. O objectivo dessas classes é permitir ao programador obter facilmente um
  15. "visual" à VisualPrefs sem ter que esperar que eu implemente um  'patch'
  16. para a sua aplicação.  ;-)
  17.  
  18. Actualmente existe apenas uma classe:
  19.  
  20. "tbiclass" - a classe da barra de título
  21.  
  22. Esta classe proporciona na barra de título das suas janelas as imagens
  23. mais comuns dos botões criados pelas aplicações.  Exemplos disto são o botão
  24. de "iconificar" ou o botão "padlock" do DirOpus5.
  25.  
  26. Todos os programas que usem esta classe obterão o mesmo aspecto para os botões
  27. da barra de título se o VisualPrefs estiver a correr, o que provavelmente é
  28. melhor do que ter diversas versões da mesma imagem...
  29.  
  30. Pode usar a "tbiclass" como "sysiclass"; são ambas sub-classes da "imageclass".
  31. Uma imagem para a "tbiclass" pode ser criada chamando NewObject() com as
  32. seguintes opções:
  33.  
  34. SYSIA_DrawInfo - Isto é absolutamente obrigatório.  TEM que passar um ponteiro
  35.                  DrawInfo para a "tbiclass" ou o NewObject() falhará.
  36.  
  37. SYSIA_Which - Para especificar a imagem que pretende; actualmente existem seis
  38.               tipos de imagem:
  39.  
  40.               POPUPIMAGE    - Imagem de botão "pop-up" do MUI da barra de título.
  41.               MUIIMAGE      - Imagem de botão "configuração" do MUI da barra de título.
  42.               SNAPSHOTIMAGE - Imagem de botão "instantâneo" do MUI da barra de título.
  43.               ICONIFYIMAGE  - Imagem de botão "iconificar" da barra de título.
  44.  
  45.               PADLOCKIMAGE  - Imagem do tipo de botão "padlock" do DirOpus.
  46.               TBFRAMEIMAGE  - Uma imagem de botão de barra de título vazia para
  47.                               efeitos gerais.
  48.  
  49. IA_Width, IA_Height - Estes só são reconhecidos pelo tipo TBFRAMEIMAGE;
  50.                       os restantes tipos de imagem ignoram-nos e têm sempre
  51.                       o mesmo tamanho da imagem do botão de profundidade.
  52.  
  53. SYSIA_ReferenceFont - Este só é reconhecido pelo tipo TBFRAMEIMAGE;
  54.                       os restantes tipos de imagem ignoram-no e tem sempre
  55.                       a mesma altura da imagem do botão de profundidade.
  56.  
  57. Claro que se o NewObject() falhar deve providenciar uma imagem pré-definida para
  58. os botões da sua barra de título.  No entanto, planeio editar brevemente em
  59. disquete uma versão "freeware" de imagens para a "tbiclass" que poderá incluir nas
  60. suas aplicações.  Esta classe providenciará as imagens necessárias que serão
  61. automaticamente substituídas pelas do VisualPrefs se este estiver presente.
  62. Por isso, pode manter as suas imagens pré-definidas muito simples. ;-)
  63.  
  64. É importante tomar nota de que todas as imagens da "tbiclasss" terão um valor
  65. de -1 no lado esquerdo.  Isto não deve ser modificado e deve colocar os seus
  66. botões da barra de título em concordância.  A razão para este (aparentemente
  67. estranho) comportamento é que as imagens dos botões da barra de título da Intuition
  68. também funcionam deste modo, devemos tentar manter a compatibilidade com a
  69. Intuition sempre que for possível.
  70.  
  71. Assim, ajuste o tamanho dos seus botões, se necessário, para os adaptar ao tamanho
  72. das imagens devolvido pela classe.
  73.  
  74. Um exemplo de tudo isto pode ser:
  75.  
  76.    ...
  77.  
  78.    /* Criar a imagem */
  79.  
  80.    if (!(iconifyimage = NewObject(NULL,"tbiclass",SYSIA_Which,ICONIFYIMAGE,
  81.                                                   SYSIA_DrawInfo,dri,
  82.                                                   TAG_END)))
  83.    {
  84.       iconifyimage = builtin_iconifyimage;
  85.    }
  86.  
  87.    /* Utilizar a imagem */
  88.  
  89.    gad->GadgetRender = iconifyimage;
  90.    ...
  91.  
  92.    /* Libertar a imagem */
  93.  
  94.    if (iconifyimage != builtin_iconifyimage) DisposeObject(iconifyimage);
  95.  
  96.    ...
  97.  
  98. É tudo.  Por agora não tenho um verdadeiro ficheiro de exemplo, por isso,
  99. para utilizar a "tbiclass" nas suas aplicações, por favor cole as poucas
  100. linhas seguintes no início do seu código.
  101.  
  102. ---- cortar por aqui ----8<---- cortar por aqui ----8<---- cortar por aqui ----
  103.  
  104. #define POPUPIMAGE    (101)
  105. #define MUIIMAGE      (102)
  106. #define SNAPSHOTIMAGE (103)
  107. #define ICONIFYIMAGE  (104)
  108. #define PADLOCKIMAGE  (105)
  109. #define TBFRAMEIMAGE  (106)
  110.  
  111. ---- cortar por aqui ----8<---- cortar por aqui ----8<---- cortar por aqui ----
  112.  
  113. Existe já uma aplicação a usar a "tbiclass", ViNCEd de Thomas Richter.
  114.  
  115. Espero que também suporte a "tbiclass" e contribua deste modo para dar uma
  116. aparência consistente a todos os botões das barras de título usados nas
  117. aplicações.
  118.  
  119. Obrigado,
  120.                                       Massimo Tantignone (tanti@intercom.it)
  121.